package org.posupe.empresas;

import org.posupe.pessoas.PessoaFisica;
import org.posupe.pessoas.PessoaJuridica;
import org.posupe.util.Endereco;

/**
 * @author Marcio Calado
 */
public class Empresa extends PessoaJuridica {

	private String sigla;

	private PessoaFisica responsavelRH;

	public Empresa(String cnpj, String razaoSocial, String nomeFantasia,
			String sigla, Endereco endereco, PessoaFisica responsavelRH,
			String telefone, String fax, String email) {
		super(cnpj, razaoSocial, nomeFantasia, telefone, fax, email, endereco);

		this.sigla = sigla;

		this.responsavelRH = responsavelRH;

	}

	public Empresa(String cnpj) {
		this(cnpj, null, null, null, null, null, null, null, null);
	}

	public Empresa() {
		super();
	}

	public PessoaFisica getResponsavelRH() {
		return responsavelRH;
	}

	public String getSigla() {
		return sigla;
	}

	public boolean match(Empresa empresa) {
		boolean retorno = true;
		if (empresa == null 
				|| (empresa.responsavelRH == null && empresa.sigla == null
				&& empresa.getCodigo() == null && empresa.getEndereco() == null
				&& empresa.getFax() == null && empresa.getNome() == null
				&& empresa.getNomeFantasia() == null && empresa.getTelefone() == null)
				|| (this.responsavelRH == null && this.sigla == null
				&& this.getCodigo() == null && this.getEndereco() == null
				&& this.getFax() == null && this.getNome() == null
				&& this.getNomeFantasia() == null && this.getTelefone() == null)) {
			retorno = false;

		}

		if (empresa.getCodigo() != null && this.getCodigo() != null && retorno) {
			if (!this.getCodigo().contains(empresa.getCodigo())) {
				retorno = false;
			}
		}

		if (empresa.getNome() != null && this.getNome() != null && retorno) {
			if (!this.getNome().contains(empresa.getNome())) {
				retorno = false;
			}
		}

		if (empresa.sigla != null && this.sigla != null && retorno) {
			if (!this.sigla.contains(empresa.sigla)) {
				retorno = false;
			}
		}

		if (empresa.getEndereco() != null && this.getEndereco() != null
				&& retorno) {
			if (!this.getEndereco().match(empresa.getEndereco())) {
				retorno = false;
			}
		}

		if (empresa.responsavelRH != null && this.responsavelRH != null
				&& retorno) {
			if (!this.responsavelRH.match(empresa.responsavelRH)) {
				retorno = false;
			}
		}

		if (empresa.getTelefone() != null && this.getTelefone() != null
				&& retorno) {
			if (!this.getTelefone().contains(empresa.getTelefone())) {
				retorno = false;
			}
		}

		if (empresa.getFax() != null && this.getFax() != null && retorno) {
			if (!this.getFax().contains(empresa.getFax())) {
				retorno = false;
			}
		}

		if (empresa.getNomeFantasia() != null && this.getNomeFantasia() != null
				&& retorno) {
			if (!this.getNomeFantasia().contains(empresa.getNomeFantasia())) {
				retorno = false;
			}
		}

		return retorno;
	}

	public void setResponsavelRH(PessoaFisica responsavelRH) {
		this.responsavelRH = responsavelRH;
	}

	public void setSigla(String sigla) {
		this.sigla = sigla;
	}

	public String toString() {
		return "Codigo:" + this.getCodigo() + "\t- " + this.getNome()
				+ "\t- " + this.getNomeFantasia() + "\t- "
				+ this.getSigla() + "\n" + "telefone: " + this.getTelefone()
				+ "\tfax: " + this.getFax() + "\t Email: " + this.getEmail()
				+ "\n" + "\tEndereco: " + this.getEndereco()
				+ "\n\tResponsavel RH:" + this.getResponsavelRH();
	}
}
